//***封装的核心是能被重复使用
        // 使用的时候直接调用，传递一个对象就可以
        // ajax({
        //     url: '', // 请求的地址
        //     type: '', // 请求方式
        //     data: '', // 携带的参数
        //     success: function () {

        //     } // 成功以后执行的函数
        // })
        //封装一个函数，函数的名字叫ajax，别人传一个对象obj用
        function ajax(obj) {
            //解构赋值
            let { url, type = "get", data ,success} = obj;
            // console.log(url, type, data,success);
            //不论是get/post 请求参数  都是username=aaa&age=2,
            // 只不过，在get中是放在url后面；在post里是放到send()里面
            //所以想办法把username=aaa&age=2转换成一个字符串，放到哪里都由我们来决定
            //**将 这个样子的data{username:"aaa",age:2}->转换成字符串——》username=aaa&age=2

            //定义一个数组，放所有的参数
            let arr = [];
            //遍历data
            for (let attr in data) {
                //attr 是属性名
                // console.log(attr);
                //想要取attr里面的值
                // console.log(data[attr]);
                arr.push(attr + "=" + data[attr]);
            }
            console.log(arr);
            //先得到let arr=['username=aaa','age=2']
            //然后arr.join('&')//username=aaa&age=2
            //paramsStr参数字符串
            let paramsStr = arr.join("&")//username=aaa&age=2
            // console.log(paramsStr);

            //做判断  看 是get 还是post 用 不论get请求还是post请求，都需要先创建好对象
            let xhr = new XMLHttpRequest();
            if (type == 'get') {
                //如果data不传入，显示data为undefined,并且上面遍历data代码不会执行
                //所以需要再做一个判断
                if(paramsStr == ''){
                    xhr.open(type,url);
                }else{
                    xhr.open(type, url + '?' + paramsStr)
                }
                xhr.send()
            } else if (type == 'post') {
                xhr.open(type, url)
                //post请求，还涉及到头部信息
                // 如果是用 ajax 对象发送 post 请求，必须要先设置一下请求头中的 content-type
                // 告诉一下服务端我给你的是一个什么样子的数据格式
                //固定格式
                xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
                xhr.send(paramsStr);//paramsStr参数字符串
            }
            //如何拿数据
            xhr.onload = function () {
                //此回调函数是异步执行 对于在外部想要拿到异步执行的结果，需要在外部传入一个success函数（函数名随意起）
                if (xhr.status == 200) {
                    // console.log(xhr.responseText);服务器返回的数据
                    //直接把返回的数据转换成对象
                   let r=JSON.parse(xhr.responseText)
                    // console.log(obj);//**获取了服务器返回的数据 此时82行代码不会执行
                    //r是实参  调用就会把实参的值给  定义的函数（success）的形参   r 的值就会给到 res
                    success(r);//一调用，70行一打印，就调用success函数，82行也会执行了   执行顺序：70-》82
                    //在请求成功以后调用 success，因为success函数 是在ajax 外部定义，一旦调用，ajax函数外部就知道了  请求已经成功了
                }
            }
        }